#ifndef REALTIMEEXPORTMANAGER_H
#define REALTIMEEXPORTMANAGER_H

#include <QObject>
#include <QImage>
#include <QString>
#include <QList>
#include <QTimer>
#include "outputsettings.h"
#include "unifiedfileinfo.h"  // For UnifiedFileInfo definition
class MainWindow;
class PageView;

class RealTimeExportManager : public QObject
{
    Q_OBJECT

public:
    explicit RealTimeExportManager(QObject *parent = nullptr);
    ~RealTimeExportManager();

    // 设置主窗口和页面视图的引用
    void setMainWindow(MainWindow* mainWindow);
    void setPageView(PageView* pageView);

    // 开始实时预览导出
    void startExport(const QList<UnifiedFileInfo>& files, const OutputSettings& settings, const QString& outputPath);

    // 停止导出
    void stopExport();

    // 导出状态
    bool isExporting() const { return m_isExporting; }

signals:
    // 当前页面变化信号（发送给主窗口预览）
    void currentPageChanged(const QImage& page, const QString& info);

    // 进度更新信号
    void progressUpdated(int current, int total, const QString& status);
    void fileProgressUpdated(int currentFile, int totalFiles, const QString& fileName);
    void pageProgressUpdated(int currentPage, int totalPages, const QString& pageInfo);

    // 导出完成/失败信号
    void exportCompleted(const QString& outputPath);
    void exportFailed(const QString& error);

private slots:
    void processNextPage();

private:
    // 核心处理方法
    void initializeExport();
    void processCurrentFile();
    void processCurrentPage();
    void finalizeExport();

    // 页面渲染
    QImage renderPageForExport(int fileIndex, int pageIndex);
    QImage renderCoverPage();

    // 状态管理
    MainWindow* m_mainWindow;
    PageView* m_pageView;

    // 导出参数
    QList<UnifiedFileInfo> m_files;
    OutputSettings m_settings;
    QString m_outputPath;

    // 导出状态
    bool m_isExporting;
    int m_currentFileIndex;
    int m_currentPageIndex;
    int m_totalPages;

    // 定时器用于分步处理
    QTimer* m_processTimer;

    // PDF写入器（稍后实现）
    void* m_pdfWriter;  // 暂时用void*，稍后替换为具体的PDF写入器
};

#endif // REALTIMEEXPORTMANAGER_H